iT邦幫忙

2023 iThome 鐵人賽

DAY 10
0
自我挑戰組

C語言精讀研習系列 第 10

條件式用遞迴來中止函式-上

  • 分享至 

  • xImage
  •  
fact(n-1, result);
  • 每次將n-1的值當作引數,再重複呼叫自己一次,就形成fact()一直呼叫fact()函式。
  • 每次呼叫自己,都把n-1, 並把累乘的result的值乘上n。
  • 最後呼叫fact(0, 3628800), 因為 n == 0 , 就執行else的條件式
  • 僅僅printf最後的result值(後退一格),停止呼叫自己

程式碼

#include <stdio.h>
void fact (int n, int result){	//宣告定義計算階乘的函式 
	if (n != 0){	//如果項次不等於0 
		result = result * n;
		printf("%d*", n);
		fact(n-1, result);	//呼叫函式本身 
	}else{
		printf("\b=%d\n", result);	// \b 為後退一格(Backspace)
	}
}

int main(void){
	int n;	//階乘的項次
		
	printf("請輸入 n 值,以計算 n 的階乘值\n");
	scanf("%d", &n);
	fact(n, 1);
		
	return 0;	
}

參考資料:最新C程式語言


上一篇
使用簡易函式演練C語言證照題庫
下一篇
條件式用遞迴來中止函式-下
系列文
C語言精讀研習47
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言